﻿using NP.BPMReportPlatform.UserTrial.Dto;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace NP.BPMReportPlatform.UserTrial
{
    /// <summary>
    /// 工程接口服务
    /// </summary>
    public interface IUserTrialService : IApplicationService
    {
        /// <summary>
        /// 试用期员结果汇总查询数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetSummarResultOutput>> GetSummarResult(GetSummarResultInput input);

        /// <summary>
        /// 导出试用期结果汇总表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<MemoryStream> ExportSummarResultAsync(GetSummarResultInput input);

        /// <summary>
        /// 根据工号查询员工适期情况明细表
        /// </summary>
        /// <param name="workNumber">工号</param>
        /// <returns></returns>
        Task<SummarResultDetail> GetSummarResultDetailAsync(string workNumber);

        /// <summary>
        /// 根据工号导出员工适期情况明细表
        /// </summary>
        /// <param name="workNumber">工号</param>
        /// <returns></returns>
        Task<MemoryStream> ExportSummarResultDetailAsync(string workNumber);

        /// <summary>
        /// 适用期转正评估明细查询数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetRegularDetailOutput>> GetRegularResultAsync(GetSummarResultInput input);

        /// <summary>
        /// 导出适用期转正评估明细
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<MemoryStream> ExportRegularResultAsync(GetSummarResultInput input);

        /// <summary>
        /// 查询试用期月度评估明细表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetTrialDetailOutput>> GetTrialDetailAsync(GetSummarResultInput input);

        /// <summary>
        /// 导出试用期月度评估明细表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<MemoryStream> ExportTrialDetailAsync(GetSummarResultInput input);

        /// <summary>
        /// 总部报表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetGeneralResultOutput>> GetGeneralResultAsync(GetSummarResultInput input);

        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetGeneralResultOutput>> ExportGeneralResultAsync(GetSummarResultInput input);
    }
}